from kdt.kwdriven import KWDriven
from kdt.tools import FileHandler


class KWAct:

    def __init__(self):

        # 单一职责原则
        # 开闭原则:对修改关闭，对增加开放
        self.key_map = FileHandler.read_json('keymap')
        self.kwd = KWDriven()

    def start(self):
        scripts = FileHandler.read_dir('.\\scripts')
        for script in scripts:
            steps = FileHandler.read_txt(script)  # 获取不同脚本文件的脚本列表
            for step in steps:
                ckw = step.split(',')[0]  # 获取脚本中的中文关键字
                ekw = self.key_map[ckw]  # 将中文关键字转化为英文关键字
                p_list = step.split(',')[1:]
                temp = []
                for p in p_list:
                    temp.append(p.strip())   # 去掉参数左右的空格
                params = tuple(temp)  # 获取参数列表转化为元组用于不定长参数传递
                if hasattr(self.kwd, ekw):
                    getattr(self.kwd, ekw)(*params)  # 通过反射机制获取对象的方法并传递不定长参数执行

if __name__ == '__main__':
    kwa = KWAct()
    kwa.start()

